Jason Gerecke [Tue, 10 Oct 2017 16:17:43 +0000 (09:17 -0700)]
wayland: Add support for BTN_STYLUS3
BTN_STYLUS3 is defined by the Linux 4.15 kernel and is sent when the
third button on a stylus is pressed. At the moment, only Wacom's "Pro
Pen 3D" has three stylus buttons. Pressing this button triggers a button
8 event to be sent under X11, so we use the same mapping here.
https://bugzilla.gnome.org/show_bug.cgi?id=790033
Nuclear Sunshine [Tue, 23 Jan 2018 13:49:31 +0000 (13:49 +0000)]
Add AGPL3-only licence to GtkAboutDialog
https://bugzilla.gnome.org/show_bug.cgi?id=792793
Timm Bäder [Sat, 27 Jan 2018 11:19:22 +0000 (12:19 +0100)]
gl: Add test case for clipped cross fade nodes
Timm Bäder [Sat, 27 Jan 2018 11:13:37 +0000 (12:13 +0100)]
gl renderer: Reset clip when drawing offscreen
Just like we reset the scissor test and the viewport, we also can't use
the current clip anymore in this case.
Timm Bäder [Sat, 27 Jan 2018 11:11:49 +0000 (12:11 +0100)]
GskRoundedRect: Fix GSK_ROUNDED_RECT_INIT macro
GskRoundedRect does not have a .rect member, it's 'bounds'. Also,
properly initialize all fields, i.e. all the corners.
Timm Bäder [Sat, 27 Jan 2018 10:02:07 +0000 (11:02 +0100)]
gl renderer: Fix hidpi cairo node rendering
We can't just unconditionally create a larger texture here, since the
incoming cairo surface might have a device scale that doesn't fit our
scale_factor. Instead, look up the surface device scale and use that.
Timm Bäder [Sat, 27 Jan 2018 10:00:59 +0000 (11:00 +0100)]
gl renderer: Make width/height relation more obvious
In add_offscreen_ops, we use the max_x/min_x values for the texture and
viewport width, and the max_y/min_y for the texture and viewport height.
Timm Bäder [Fri, 26 Jan 2018 16:28:25 +0000 (17:28 +0100)]
inspector: Actually call the pick() vfunc when picking
Otherwise, overridden pick vfuncs don't work and we e.g. pick widgets
scrolled away in a viewport.
Timm Bäder [Fri, 26 Jan 2018 14:51:33 +0000 (15:51 +0100)]
entry: Remove unused struct members
Timm Bäder [Wed, 24 Jan 2018 07:44:53 +0000 (08:44 +0100)]
menu: Simplify popup_at_rect
No need to keep a separate current_event variable around, we don't use
it anyway.
Matthias Clasen [Tue, 23 Jan 2018 23:04:28 +0000 (00:04 +0100)]
gdk: Stop referring to ::key-press/release-event
These signals are going away, don't mention them in
the docs.
Matthias Clasen [Tue, 23 Jan 2018 23:02:58 +0000 (00:02 +0100)]
entry completion: Stop using key-press/release-event
We can use the existing ::event handler for this.
Timm Bäder [Tue, 23 Jan 2018 20:46:05 +0000 (21:46 +0100)]
gsk: Add test case for last commit
Timm Bäder [Tue, 23 Jan 2018 20:44:33 +0000 (21:44 +0100)]
gl renderer: Fix outset shadow outline transform
This fixes hidpi blurred outset shadows
Emmanuele Bassi [Thu, 18 Jan 2018 19:23:16 +0000 (19:23 +0000)]
Enforce UTF-8 encoding when opening C files
We have a couple of Python 3.x scripts that parse C files, and since C
does not have any encoding, we need to force one ourselves, to avoid the
case when we're running the build in a non-UTF-8 locale.
https://bugzilla.gnome.org/show_bug.cgi?id=792497
Daniel Boles [Thu, 18 Jan 2018 00:51:24 +0000 (00:51 +0000)]
Widget: Don’t call reset() on NULL EventController
GtkGesture is a GtkEventController. gtk_event_controller_dispose() calls
_gtk_widget_remove_controller(). That NULLs the pointer-to-Controller in
our EventControllerData but does not delete said ECData from our GList.
Subsequently, if that same Widget gets unparent()ed, that method calls
unset_state_flags(), which leads to doing reset_controllers() if we are
insensitive. Now, unlike most most other loops over the GList of ECData,
reset_controllers() does not skip nodes whose pointer-to-Controller is
NULL. So, we call gtk_event_controller_reset(NULL) and get a CRITICAL.
This surfaced in a gtkmm program. The Gesture is destroyed before the
Widget. The Widget then gets dispose()d, which calls unparent()… boom.
I didn’t find an MCVE yet but would hope this logic is correct anyway:
The simplest fix is to make the loop in gtk_widget_reset_controllers()
skip GList nodes with a NULL Controller pointer, like most other such
loops, so we avoid passing the NULL to gtk_event_controller_reset().
In other, live cases, _gtk_widget_run_controllers() loops over the GList
and removes/frees nodes having NULL Controllers, so that should suffice.
But this clearly was not getting a chance to happen in the failing case.
https://bugzilla.gnome.org/show_bug.cgi?id=792624
GNOME Translation Robot [Mon, 22 Jan 2018 18:34:48 +0000 (18:34 +0000)]
Update Esperanto translation
(cherry picked from commit
814c55d473c6a7ab9f930421aad5612a351ba68d)
Juan Pablo Ugarte [Mon, 22 Jan 2018 14:20:14 +0000 (11:20 -0300)]
GtkGestureMultiPress: check event state before emiting released signal
Fix bug 771986 "Inconsistent 'row-activated' signal emission before \
drag'n'drop, 'activate-on-single-click'=TRUE, 'reorderable'=TRUE"
Timm Bäder [Sun, 21 Jan 2018 19:37:46 +0000 (20:37 +0100)]
widget: Only initialize bounds rect if necessary
We only use the graphene_rect_t version of the offset_clip for the
fallback cairo nodes.
Timm Bäder [Sun, 21 Jan 2018 14:23:17 +0000 (15:23 +0100)]
vulkan: Fix release builds
Timm Bäder [Sun, 21 Jan 2018 10:01:32 +0000 (11:01 +0100)]
combobox: Remove some unneeded includes
Simon McVittie [Thu, 26 Oct 2017 14:51:51 +0000 (15:51 +0100)]
Set GDK_WINDOW_STATE_TILED if any edge is tiled
This state flag is used in several places in GTK+, for example to
ignore RESIZE_INC hints if tiled. Setting it is also necessary for
backwards compatibility with applications that changed their behaviour
when tiled, such as GNOME Terminal and its MATE fork.
Signed-off-by: Simon McVittie <smcv@debian.org>
https://bugzilla.gnome.org/show_bug.cgi?id=789357
Georges Basile Stavracas Neto [Wed, 4 Oct 2017 18:33:15 +0000 (15:33 -0300)]
display-x11: Unset tiled state if _GTK_EDGE_CONSTRAINTS is supported
Commit
c415bef5de introduced support for the new _GTK_EDGE_CONSTRAINTS
atom. If the compositor supports that atom, however, we were always
setting the tiled state, even if no actual tiling information is
available, where the correct action is to completely remove any traces
of the tiled state.
Fix that by correctly removing the tiled state when compositor supports
_GTK_EDGE_CONSTRAINTS Xatom.
https://bugzilla.gnome.org/show_bug.cgi?id=788516
Timm Bäder [Fri, 19 Jan 2018 14:15:09 +0000 (15:15 +0100)]
entrycompletion: Realize toplevel before attempting a grab
Otherwise, gtk_widget_get_window returns NULL and we can't successfully
perform a grab via the later gdk_set_grab call. This fixes the entry
completion in the file chooser not working.
Matthias Clasen [Fri, 19 Jan 2018 15:22:28 +0000 (16:22 +0100)]
tests: Remove some unneeded gtk_widget_show calls
Widgets are visible by default now.
Matthias Clasen [Fri, 19 Jan 2018 15:04:18 +0000 (16:04 +0100)]
iconview: Fix updates with filter models
Filter models rely on views taking a ref on every node
they care about. GtkIconView was not doing that. Amazingly,
this has never shown up in a bug so far, until I spotted
the fallout in gnome-font-viewer.
Matthias Clasen [Fri, 19 Jan 2018 15:02:42 +0000 (16:02 +0100)]
Add a test for ::row-changed vs node refs
Test that filter models propagate ::row-changed if there is
an external reference on the node, and not otherwise. This
is showing up in buggy icon view behaviour, where the icon
view is not redrawing if the content changes in a model that
is below a filter model.
Carlos Garnacho [Fri, 19 Jan 2018 17:47:21 +0000 (18:47 +0100)]
gtkwindow: Disconnect GdkSeat::device-removed callback on finalize
Otherwise dangling callbacks may lead to crashes.
Timm Bäder [Fri, 19 Jan 2018 14:00:22 +0000 (15:00 +0100)]
gl renderer: Fix shadow node child offset
We shouldn't apply the shadow offset when drawing the child offscreen,
instead apply it afterwards when we draw it to the current render
target.
Timm Bäder [Fri, 19 Jan 2018 13:59:31 +0000 (14:59 +0100)]
testsuite: Add another gl renderer test case
Timm Bäder [Fri, 19 Jan 2018 12:21:41 +0000 (13:21 +0100)]
linkbutton: Only set widget cursor once
Timm Bäder [Fri, 19 Jan 2018 09:16:15 +0000 (10:16 +0100)]
inspector: Allow picking insensitive widgets
The default gtk_widget_contains/gtk_widget_pick don't consider
insensitive widgets.
Timm Bäder [Fri, 19 Jan 2018 08:57:49 +0000 (09:57 +0100)]
csswidgetnode: Avoid some unnecessary work
The later code would just ref both styles and not do anything else.
Timm Bäder [Fri, 19 Jan 2018 08:53:39 +0000 (09:53 +0100)]
widget-factory: Fix some layout issues
We have to explicitly set some of these to their default values so
expand-set is TRUE and the boxes stop propagating their expansion state
up the hierarchy.
Timm Bäder [Thu, 18 Jan 2018 20:54:03 +0000 (21:54 +0100)]
textview: Remove some stray debugging output
Leftover from
7046463b880c79b227594a2b35a6c625119d286e
Matthias Clasen [Thu, 18 Jan 2018 22:46:58 +0000 (17:46 -0500)]
Simplify all ui files again
Now even simpler!
Matthias Clasen [Thu, 18 Jan 2018 22:45:12 +0000 (17:45 -0500)]
builder-tool: Try harder to find types
If g_type_from_name fails, try gtk_builder_get_type_from_name
before giving up. This fixes cases like GtkPrinterOptionWidget.
Timm Bäder [Thu, 18 Jan 2018 14:10:49 +0000 (15:10 +0100)]
window: Ignore gtk_window_close calls from close-request handlers
Timm Bäder [Thu, 18 Jan 2018 13:43:36 +0000 (14:43 +0100)]
widget: Always assign values to out parameter in translate_coordinates
safe guard against people using the returned coordinate values without
checking the return value of gtk_widget_translate_coordinates.
Timm Bäder [Thu, 18 Jan 2018 13:42:39 +0000 (14:42 +0100)]
widget: Initialize a local variable
We will later pass this variable on to some other functions, so be safe
against them using the value.
Timm Bäder [Thu, 18 Jan 2018 13:38:27 +0000 (14:38 +0100)]
aboutdialog: Only close on delete events
Clicking on the Credits button should not close the dialog.
Timm Bäder [Thu, 18 Jan 2018 08:40:19 +0000 (09:40 +0100)]
fontchooswerwidget: Center spinbutton next to scales vertically
Timm Bäder [Thu, 18 Jan 2018 07:21:11 +0000 (08:21 +0100)]
gl renderer: Render GL textures upside down
These come from an FBO so we need to flip the texture coords on the y
axis, just like we do everywhere else.
Matthias Clasen [Thu, 18 Jan 2018 04:49:17 +0000 (23:49 -0500)]
Revert "inspector: Stop adding event controllers to the object tree"
This reverts commit
8f3cb2658a79d20912b6f2ec96bc7e6bbdaeb067.
This didn't quite work out, since being in the object tree is
a prerequisite for showing up in the property editor.
Matthias Clasen [Thu, 18 Jan 2018 02:45:08 +0000 (21:45 -0500)]
Document new texture api
Matthias Clasen [Thu, 18 Jan 2018 01:19:19 +0000 (20:19 -0500)]
Use the new api to release resources
When we unrealize a GL area with outstanding textures,
call gdk_texture_release_gl on them to avoid later crashes.
Matthias Clasen [Thu, 18 Jan 2018 01:15:45 +0000 (20:15 -0500)]
Add a way to release GL resources
The inspector may hold on to render nodes and textures
beyond the lifetime of the widget (and thus the GL
resources). To handle this situation, allow the widget
to explicitly release the GL resources, and make
the texture available on the clent-side as a cairo
surface. This lets the recorder still show the content
after the widget is gone.
Matthias Clasen [Thu, 18 Jan 2018 00:49:52 +0000 (19:49 -0500)]
glarea: Drop the dispose vfunc
This was causing us to leak, in the following scenario:
1) gtk_widget_destroy is called on a GL area
2) dispose is run and clears the context
3) the GL area is unrealized, but the context is already cleared,
so we leak all the GL buffers
Matthias Clasen [Thu, 18 Jan 2018 00:49:05 +0000 (19:49 -0500)]
glarea: Always delete textures on unrealize
We need to make the context current for deleting
textures as well, so just do it unconditionally.
Matthias Clasen [Thu, 18 Jan 2018 00:48:33 +0000 (19:48 -0500)]
glarea: Avoid a crash
We must only delete the texture if it is not NULL.
Matthias Clasen [Thu, 18 Jan 2018 00:47:45 +0000 (19:47 -0500)]
gdkgears: add a way to remove gears
This is needed to test the GL resource cleanup
code paths.
Matthias Clasen [Thu, 18 Jan 2018 00:15:14 +0000 (19:15 -0500)]
glarea: Add a pool for GL textures
Handle the situation that a GL texture might remain
in use (e.g. by a slow frame, or by the recorder)
In that case, we can't modify it but must use a
new one. Keep a pool of GL textures for this eventuality.
Matthias Clasen [Thu, 18 Jan 2018 00:12:27 +0000 (19:12 -0500)]
inspector: Don't leak recordings
g_list_model_get_item is transfer full, so we need
to drop the references we get from it. This was showing
up while testing the GL texture cache in GtkGLArea.
Timm Bäder [Wed, 17 Jan 2018 20:47:05 +0000 (21:47 +0100)]
rendernodeimpl: Fix a crash
We may get a NULL renderer here.
Timm Bäder [Wed, 17 Jan 2018 15:02:28 +0000 (16:02 +0100)]
applicationwindow: Fix measure implementation
Really calculate the menubar height, not the width.
Timm Bäder [Wed, 17 Jan 2018 14:42:01 +0000 (15:42 +0100)]
sizerequest: Fix for_size adjustment
We need to pull the proper size from the size request cache and adjust
it accordingly.
Timm Bäder [Wed, 17 Jan 2018 12:11:32 +0000 (13:11 +0100)]
box: Simplify some code
All out varibles in measure implementations must be non-null and -1 is
the default value for the baseline parameters.
Timm Bäder [Wed, 17 Jan 2018 12:02:58 +0000 (13:02 +0100)]
box: Remove self assignment
Timm Bäder [Wed, 17 Jan 2018 11:54:42 +0000 (12:54 +0100)]
box: Remove useless if statement
We already check right before this one whether child->pack != packing
and if so, we continue to the next iteration. So, no need to check again
whether the inverted condition child->pack == packing is true, because
it is.
Timm Bäder [Wed, 17 Jan 2018 11:36:37 +0000 (12:36 +0100)]
label: Update layout width directly form allocation
For the one update_layout_width call in size_allocate, we can just use
the passed-in allocation width instead of a separate (relatively slow)
gtk_widget_get_width call.
Timm Bäder [Tue, 16 Jan 2018 19:25:02 +0000 (20:25 +0100)]
widget: Clip redrawn area to widget clip
The clip can already be modified in size_allocate, so we never want a
widget to invalidate more than its actual clip region.
Timm Bäder [Tue, 16 Jan 2018 17:47:52 +0000 (18:47 +0100)]
box: Remove some unneeded checks
We only call this function from the measure implementation and we should
never get NULL pointers there.
Timm Bäder [Tue, 16 Jan 2018 16:50:11 +0000 (17:50 +0100)]
box: Remove an unnecessary local variable
Timm Bäder [Tue, 16 Jan 2018 16:44:46 +0000 (17:44 +0100)]
box: Use GtkWidget's widget list in get_size
Timm Bäder [Tue, 16 Jan 2018 14:12:24 +0000 (15:12 +0100)]
listbox: Don't assume that row child == focus widget
With widgets supporting child widgets and custom GtkListBoxRow
subclasses, this might not be true.
Timm Bäder [Tue, 16 Jan 2018 13:50:50 +0000 (14:50 +0100)]
widget: Remove reparent special case
Since gtk_widget_reparent doesn't exist anymore, we can also remove this
special case.
Timm Bäder [Mon, 15 Jan 2018 21:07:29 +0000 (22:07 +0100)]
container: Remove some unused includes
Timm Bäder [Mon, 15 Jan 2018 20:58:36 +0000 (21:58 +0100)]
viewport: Remove some unused includes
Matthias Clasen [Wed, 17 Jan 2018 19:43:50 +0000 (14:43 -0500)]
gl area: Avoid trivialities
If we have zero pixels, no need to snapshot anything,
and produce GL errors while doing so.
Matthias Clasen [Wed, 17 Jan 2018 19:39:46 +0000 (14:39 -0500)]
gtk-demo: Add gears to the bowl
Just for fun.
Matthias Clasen [Wed, 17 Jan 2018 14:22:01 +0000 (09:22 -0500)]
Drop GtkGLArea::has-alpha
We now always behave as if has-alpha is TRUE.
Update all callers.
Matthias Clasen [Wed, 17 Jan 2018 12:25:51 +0000 (07:25 -0500)]
Convert gtkglarea to use snapshots
Just append a texture node.
Note that this is not 100% done yet. The GL area really
needs to keep a pool of textures, and only reuse them
once the GdkTexture object is gone.
Matthias Clasen [Wed, 17 Jan 2018 05:52:15 +0000 (00:52 -0500)]
gsk: Handle GL textures
These textures already have a GL texture in them,
no need to create a new one.
Matthias Clasen [Wed, 17 Jan 2018 05:32:26 +0000 (00:32 -0500)]
gdk: Add a gl texture implementation
This will be used to pass a GL textures from the application
(or rather, GtkGLArea) down to the GSK GL renderer.
Matthias Clasen [Wed, 17 Jan 2018 04:33:40 +0000 (23:33 -0500)]
Drop removed api from the docs
This should have been part of the previous commit.
Matthias Clasen [Wed, 17 Jan 2018 04:22:41 +0000 (23:22 -0500)]
gdk: Drop some unused cursor apis
The query function for cursor sizes and capabilities
are not very interesting. At least, they are not used
in GTK+, and all backends but X11 just hardcode
made-up values anyway. So, lets drop them.
Matthias Clasen [Wed, 17 Jan 2018 04:21:32 +0000 (23:21 -0500)]
inspector: Stop using gdk_display_get_default_cursor_size
If the cursor theme size setting has no value, just hardcode 32.
Also, allow ridiculously large cursors, just for fun.
Matthias Clasen [Wed, 17 Jan 2018 04:20:12 +0000 (23:20 -0500)]
tooltip: Stop using gdk_display_get_default_cursor_size
It makes more sense to use the actual cursor theme size here.
Matthias Clasen [Wed, 17 Jan 2018 04:25:12 +0000 (23:25 -0500)]
testgtk: Stop using gdk_display_get_maximal_cursor_size
This function is going away. Just make a reasonable assumption
that cursor sizes up to 128 are supported.
Chris Lamb [Fri, 25 Aug 2017 15:24:38 +0000 (16:24 +0100)]
gtk/queryimmodules.c: Make the output deterministic.
Whilst working on the Reproducible Builds effort [0], we noticed that
queryimmodules generates non-reproducible output as it iterates over the
filesystem without sorting.
Patch attached.
[0] https://reproducible-builds.org/
Signed-off-by: Chris Lamb <lamby@debian.org>
https://bugzilla.gnome.org/show_bug.cgi?id=786528
Matthias Clasen [Tue, 16 Jan 2018 23:16:21 +0000 (18:16 -0500)]
tree model sort: Fix set_sort_column
We were failing to change the sort order for the
default sort column in some cases. Fix that, and
add a testcase for this issue.
https://bugzilla.gnome.org/show_bug.cgi?id=792459
Add a testcase for the previous fix
Matthias Clasen [Tue, 16 Jan 2018 23:15:13 +0000 (18:15 -0500)]
tree model sort: Fix initial default sort func
gtk_tree_sortable_has_default_sort_func should return
FALSE initially.
Matthias Clasen [Tue, 16 Jan 2018 20:42:28 +0000 (15:42 -0500)]
Fix the icontheme test
We rely on log messages here. Since logging is per-display
now, we need to set a display on our custom icontheme object
to get the expected log messages.
Matthias Clasen [Tue, 16 Jan 2018 19:50:25 +0000 (14:50 -0500)]
mountoperation: Fix a crash
We only create the gesture when the dialog is needed,
so don't free it unconditionally.
Matthias Clasen [Tue, 16 Jan 2018 19:13:20 +0000 (14:13 -0500)]
Drop ::button-press/release event
We are no longer using these, and there are several gestures
that can be used instead. If you need to catch raw button events,
use the ::event signal.
Matthias Clasen [Tue, 16 Jan 2018 18:57:50 +0000 (13:57 -0500)]
popover: Stop using ::button-press/release-event
Just use a generic ::event handler.
Matthias Clasen [Tue, 16 Jan 2018 18:52:40 +0000 (13:52 -0500)]
menushell: Stop using ::button-press/release-event
Merge the handlers into the existing handler for ::event.
Matthias Clasen [Tue, 16 Jan 2018 18:41:29 +0000 (13:41 -0500)]
menu: Remove stray references to 'button_press'
No code change, but this string was still used in
docs and comments.
Matthias Clasen [Tue, 16 Jan 2018 05:15:22 +0000 (00:15 -0500)]
places sidebar: Stop using ::button-press/release-event
We'll use a generic ::event signal instead.
Matthias Clasen [Tue, 16 Jan 2018 05:04:05 +0000 (00:04 -0500)]
gtk-demo: Stop using ::button-release-event
Matthias Clasen [Tue, 16 Jan 2018 04:57:57 +0000 (23:57 -0500)]
tests: Stop using ::button-press/release-event
The generic ::event signal works fine here.
Matthias Clasen [Tue, 16 Jan 2018 04:56:14 +0000 (23:56 -0500)]
testsuite: Stop using ::button-press-event
We can use the generic ::event signal instead.
Matthias Clasen [Tue, 16 Jan 2018 04:53:45 +0000 (23:53 -0500)]
tests: Stop using ::button-press-event
A gesture will do here.
Matthias Clasen [Tue, 16 Jan 2018 04:47:33 +0000 (23:47 -0500)]
Drop ::motion-notify-event
We no longer emit this signal. You can use various gestures
and event controllers instead. If you need to catch raw
motion events, use the generic ::event signal.
Matthias Clasen [Tue, 16 Jan 2018 04:34:13 +0000 (23:34 -0500)]
places sidebar: Stop using ::motion-notify-event
We can use the generic ::event signal here.
Matthias Clasen [Tue, 16 Jan 2018 04:26:44 +0000 (23:26 -0500)]
docs: Stop referring to specific event signals
These are going away.
Matthias Clasen [Tue, 16 Jan 2018 04:24:50 +0000 (23:24 -0500)]
gtk-demo: Stop using ::motion-notify-event in the hypertext demo
We already have a generic ::event handler, just use it for this.
Matthias Clasen [Tue, 16 Jan 2018 04:15:51 +0000 (23:15 -0500)]
tests: Stop using ::motion-notify-event
We can use the generic ::event signal here.
Matthias Clasen [Tue, 16 Jan 2018 03:52:00 +0000 (22:52 -0500)]
treeview: Stop using ::button-press-event
We can just use a gesture here.
Matthias Clasen [Tue, 16 Jan 2018 01:02:55 +0000 (20:02 -0500)]
recent chooser: Stop using ::button-press-event
We can just use a multipress gesture here.